/*
 * @lc app=leetcode.cn id=83 lang=cpp
 *
 * [83] 删除排序链表中的重复元素
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */

// #include <iostream>
// using namespace std;

// struct ListNode {
//     int val;
//     ListNode* next;
//     ListNode() : val(0), next(nullptr) {}
//     ListNode(int x) : val(x), next(nullptr) {}
//     ListNode(int x, ListNode* next) : val(x), next(next) {}
// };

class Solution {
   public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode* result = head;
        while (head != nullptr && head->next != nullptr) {
            if (head->val == head->next->val) {
                // 如果当前节点与下一节点的值相同，则跳过下一节点
                head->next = head->next->next;
            } else {
                // 如果当前节点与下一节点的值不同，则将当前节点移动至下一节点
                head = head->next;
            }
        }
        return result;
    }
};
// @lc code=end
